home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / lang / sofa.lha / sofa / smalleiffel / sys / runtime / exceptions.h < prev    next >
C/C++ Source or Header  |  2000-03-25  |  2KB  |  67 lines

  1. /*
  2. -- This file is  free  software, which  comes  along  with  SmallEiffel. This
  3. -- software  is  distributed  in the hope that it will be useful, but WITHOUT 
  4. -- ANY  WARRANTY;  without  even  the  implied warranty of MERCHANTABILITY or
  5. -- FITNESS  FOR A PARTICULAR PURPOSE. You can modify it as you want, provided
  6. -- this header is kept unaltered, and a notification of the changes is added.
  7. -- You  are  allowed  to  redistribute  it and sell it, alone or as a part of 
  8. -- another product.
  9. --          Copyright (C) 1994-98 LORIA - UHP - CRIN - INRIA - FRANCE
  10. --            Dominique COLNET and Suzanne COLLIN - colnet@loria.fr 
  11. --                       http://SmallEiffel.loria.fr
  12. --
  13. */
  14. /*
  15.   This file (SmallEiffel/sys/runtime/exception.h) is automatically included 
  16.   when exception handling is used somewhere in the live code.
  17. */
  18.  
  19. #define SE_EXCEPTIONS 1
  20.  
  21. /*
  22.   Constants from Eiffel class EXCEPTIONS :
  23. */
  24. #define Check_instruction       1
  25. #define Class_invariant       2
  26. #define Developer_exception       3
  27. #define Incorrect_inspect_value   4
  28. #define Loop_invariant           5
  29. #define Loop_variant           6
  30. #define No_more_memory        7
  31. #define Postcondition           8
  32. #define Precondition            9
  33. #define Routine_failure        10
  34. #define    Os_signal          11
  35. #define Void_attached_to_expanded 12
  36. #define Void_call_target       13
  37.  
  38. /* 
  39.    This will be the structure of rescue contexts.  A rescue context 
  40.    will be declared for every routine that has a rescue clause.
  41.  
  42.    The `next' pointer is the address of the next rescue context if there
  43.    is one higher up the call chain, or NULL if there is no other
  44.    context.
  45. */
  46. struct rescue_context {
  47.   JMP_BUF jb;
  48. #ifdef SE_NO_CHECK
  49.   /* To keep track of dump stack to unwind it safely
  50.      before the LONGJMP :
  51.   */
  52.   struct _se_dump_stack * top_of_ds ;
  53. #endif
  54.   struct rescue_context *next;
  55. };
  56.  
  57. extern struct rescue_context *rescue_context_top;
  58. extern int internal_exception_number;
  59. extern int original_internal_exception_number;
  60. extern int signal_exception_number;
  61. extern char *additional_error_message;
  62.  
  63. void setup_signal_handler(void);
  64. void signal_exception_handler(int);
  65. void internal_exception_handler(int);
  66. void print_exception(void);
  67.